home *** CD-ROM | disk | FTP | other *** search
/ Mac Format 1995 June / MacFormat 25.iso / Shareware City / Developers / fortran-to-c-translator-11 / Mac F2C 1.1 / Test Project ƒ / f2c.h next >
Text File  |  1995-01-19  |  11KB  |  393 lines

  1. /* f2c.h  --  Standard Fortran to C header file */
  2.  
  3. /**  barf  [ba:rf]  2.  "He suggested using FORTRAN, and everybody barfed."
  4.  
  5.     - From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */
  6.  
  7. #ifndef F2C_INCLUDE
  8. #define F2C_INCLUDE
  9.  
  10. #ifdef __MWERKS__
  11. #include <math.h>
  12. #endif
  13.  
  14. typedef long int integer;
  15. typedef char *address;
  16. typedef short int shortint;
  17. typedef float real;
  18. typedef double doublereal;
  19. typedef struct { real r, i; } complex;
  20. typedef struct { doublereal r, i; } doublecomplex;
  21. typedef long int logical;
  22. typedef short int shortlogical;
  23. typedef char logical1;
  24. typedef char integer1;
  25. /* typedef long long longint; */ /* system-dependent */
  26.  
  27. #define TRUE_ (1)
  28. #define FALSE_ (0)
  29.  
  30. /* Extern is for use with -E */
  31. #ifndef Extern
  32. #define Extern extern
  33. #endif
  34.  
  35. /* I/O stuff */
  36.  
  37. #ifdef f2c_i2
  38. /* for -i2 */
  39. typedef short flag;
  40. typedef short ftnlen;
  41. typedef short ftnint;
  42. #else
  43. typedef long int flag;
  44. typedef long int ftnlen;
  45. typedef long int ftnint;
  46. #endif
  47.  
  48. /*external read, write*/
  49. typedef struct
  50. {    flag cierr;
  51.     ftnint ciunit;
  52.     flag ciend;
  53.     char *cifmt;
  54.     ftnint cirec;
  55. } cilist;
  56.  
  57. /*internal read, write*/
  58. typedef struct
  59. {    flag icierr;
  60.     char *iciunit;
  61.     flag iciend;
  62.     char *icifmt;
  63.     ftnint icirlen;
  64.     ftnint icirnum;
  65. } icilist;
  66.  
  67. /*open*/
  68. typedef struct
  69. {    flag oerr;
  70.     ftnint ounit;
  71.     char *ofnm;
  72.     ftnlen ofnmlen;
  73.     char *osta;
  74.     char *oacc;
  75.     char *ofm;
  76.     ftnint orl;
  77.     char *oblnk;
  78. } olist;
  79.  
  80. /*close*/
  81. typedef struct
  82. {    flag cerr;
  83.     ftnint cunit;
  84.     char *csta;
  85. } cllist;
  86.  
  87. /*rewind, backspace, endfile*/
  88. typedef struct
  89. {    flag aerr;
  90.     ftnint aunit;
  91. } alist;
  92.  
  93. /* inquire */
  94. typedef struct
  95. {    flag inerr;
  96.     ftnint inunit;
  97.     char *infile;
  98.     ftnlen infilen;
  99.     ftnint    *inex;    /*parameters in standard's order*/
  100.     ftnint    *inopen;
  101.     ftnint    *innum;
  102.     ftnint    *innamed;
  103.     char    *inname;
  104.     ftnlen    innamlen;
  105.     char    *inacc;
  106.     ftnlen    inacclen;
  107.     char    *inseq;
  108.     ftnlen    inseqlen;
  109.     char     *indir;
  110.     ftnlen    indirlen;
  111.     char    *infmt;
  112.     ftnlen    infmtlen;
  113.     char    *inform;
  114.     ftnint    informlen;
  115.     char    *inunf;
  116.     ftnlen    inunflen;
  117.     ftnint    *inrecl;
  118.     ftnint    *innrec;
  119.     char    *inblank;
  120.     ftnlen    inblanklen;
  121. } inlist;
  122.  
  123. #define VOID void
  124.  
  125. union Multitype {    /* for multiple entry points */
  126.     integer1 g;
  127.     shortint h;
  128.     integer i;
  129.     /* longint j; */
  130.     real r;
  131.     doublereal d;
  132.     complex c;
  133.     doublecomplex z;
  134.     };
  135.  
  136. typedef union Multitype Multitype;
  137.  
  138. /*typedef long int Long;*/    /* No longer used; formerly in Namelist */
  139.  
  140. struct Vardesc {    /* for Namelist */
  141.     char *name;
  142.     char *addr;
  143.     ftnlen *dims;
  144.     int  type;
  145.     };
  146. typedef struct Vardesc Vardesc;
  147.  
  148. struct Namelist {
  149.     char *name;
  150.     Vardesc **vars;
  151.     int nvars;
  152.     };
  153. typedef struct Namelist Namelist;
  154.  
  155. #define abs(x) ((x) >= 0 ? (x) : -(x))
  156. #define dabs(x) (doublereal)abs(x)
  157. #define min(a,b) ((a) <= (b) ? (a) : (b))
  158. #define max(a,b) ((a) >= (b) ? (a) : (b))
  159. #define dmin(a,b) (doublereal)min(a,b)
  160. #define dmax(a,b) (doublereal)max(a,b)
  161.  
  162. /* procedure parameter types for -A and -C++ */
  163.  
  164. #define F2C_proc_par_types 1
  165. #ifdef __cplusplus
  166. typedef int /* Unknown procedure type */ (*U_fp)(...);
  167. typedef shortint (*J_fp)(...);
  168. typedef integer (*I_fp)(...);
  169. typedef real (*R_fp)(...);
  170. typedef doublereal (*D_fp)(...), (*E_fp)(...);
  171. typedef /* Complex */ VOID (*C_fp)(...);
  172. typedef /* Double Complex */ VOID (*Z_fp)(...);
  173. typedef logical (*L_fp)(...);
  174. typedef shortlogical (*K_fp)(...);
  175. typedef /* Character */ VOID (*H_fp)(...);
  176. typedef /* Subroutine */ int (*S_fp)(...);
  177. #else
  178. typedef int /* Unknown procedure type */ (*U_fp)();
  179. typedef shortint (*J_fp)();
  180. typedef integer (*I_fp)();
  181. typedef real (*R_fp)();
  182. typedef doublereal (*D_fp)(), (*E_fp)();
  183. typedef /* Complex */ VOID (*C_fp)();
  184. typedef /* Double Complex */ VOID (*Z_fp)();
  185. typedef logical (*L_fp)();
  186. typedef shortlogical (*K_fp)();
  187. typedef /* Character */ VOID (*H_fp)();
  188. typedef /* Subroutine */ int (*S_fp)();
  189. #endif
  190. /* E_fp is for real functions when -R is not specified */
  191. typedef VOID C_f;    /* complex function */
  192. typedef VOID H_f;    /* character function */
  193. typedef VOID Z_f;    /* double complex function */
  194. typedef doublereal E_f;    /* real function with -R not specified */
  195.  
  196. /* undef any lower-case symbols that your C compiler predefines, e.g.: */
  197.  
  198. #ifndef Skip_f2c_Undefs
  199. #undef cray
  200. #undef gcos
  201. #undef mc68010
  202. #undef mc68020
  203. #undef mips
  204. #undef pdp11
  205. #undef sgi
  206. #undef sparc
  207. #undef sun
  208. #undef sun2
  209. #undef sun3
  210. #undef sun4
  211. #undef u370
  212. #undef u3b
  213. #undef u3b2
  214. #undef u3b5
  215. #undef unix
  216. #undef vax
  217. #endif
  218.  
  219. /* Added by IMT 30 Nov 94:  Include Prototypes for ANSI C and C++ */
  220.  
  221. #if defined(__cplusplus) || !defined(KR_headers)  
  222.  
  223. #ifdef __cplusplus
  224. extern "C" {
  225. #endif
  226.  
  227. extern int abort_(void);
  228. extern double c_abs(complex *);
  229. extern void c_cos(complex *, complex *);
  230. extern void c_div(complex *, complex *, complex *);
  231. extern void c_exp(complex *, complex *);
  232. extern void c_log(complex *, complex *);
  233. extern void c_sin(complex *, complex *);
  234. extern void c_sqrt(complex *, complex *);
  235. extern double d_abs(double *);
  236. extern double d_acos(double *);
  237. extern double d_asin(double *);
  238. extern double d_atan(double *);
  239. extern double d_atn2(double *, double *);
  240. extern void d_cnjg(doublecomplex *, doublecomplex *);
  241. extern double d_cos(double *);
  242. extern double d_cosh(double *);
  243. extern double d_dim(double *, double *);
  244. extern double d_exp(double *);
  245. extern double d_imag(doublecomplex *);
  246. extern double d_int(double *);
  247. extern double d_lg10(double *);
  248. extern double d_log(double *);
  249. extern double d_mod(double *, double *);
  250. extern double d_nint(double *);
  251. extern double d_prod(float *, float *);
  252. extern double d_sign(double *, double *);
  253. extern double d_sin(double *);
  254. extern double d_sinh(double *);
  255. extern double d_sqrt(double *);
  256. extern double d_tan(double *);
  257. extern double d_tanh(double *);
  258. extern double derf_(double *);
  259. extern double derfc_(double *);
  260. extern integer do_fio(ftnint *, char *, ftnlen);
  261. extern integer do_lio(ftnint *, ftnint *, char *, ftnlen);
  262. extern integer do_uio(ftnint *, char *, ftnlen);
  263. extern integer e_rdfe(void);
  264. extern integer e_rdue(void);
  265. extern integer e_rsfe(void);
  266. extern integer e_rsfi(void);
  267. extern integer e_rsle(void);
  268. extern integer e_rsli(void);
  269. extern integer e_rsue(void);
  270. extern integer e_wdfe(void);
  271. extern integer e_wdue(void);
  272. extern integer e_wsfe(void);
  273. extern integer e_wsfi(void);
  274. extern integer e_wsle(void);
  275. extern integer e_wsli(void);
  276. extern integer e_wsue(void);
  277. extern int ef1asc_(ftnint *, ftnlen *, ftnint *, ftnlen *);
  278. extern integer ef1cmc_(ftnint *, ftnlen *, ftnint *, ftnlen *);
  279. extern double erf(double);
  280. extern double erf_(float *);
  281. extern double erfc(double);
  282. extern double erfc_(float *);
  283. extern integer f_back(alist *);
  284. extern integer f_clos(cllist *);
  285. extern integer f_end(alist *);
  286. extern void f_exit(void);
  287. extern integer f_inqu(inlist *);
  288. extern integer f_open(olist *);
  289. extern integer f_rew(alist *);
  290. extern int flush_(void);
  291. extern void getarg_(integer *, char *, ftnlen);
  292. extern void getenv_(char *, char *, ftnlen, ftnlen);
  293. extern short h_abs(short *);
  294. extern short h_dim(short *, short *);
  295. extern short h_dnnt(double *);
  296. extern short h_indx(char *, char *, ftnlen, ftnlen);
  297. extern short h_len(char *, ftnlen);
  298. extern short h_mod(short *, short *);
  299. extern short h_nint(float *);
  300. extern short h_sign(short *, short *);
  301. extern short hl_ge(char *, char *, ftnlen, ftnlen);
  302. extern short hl_gt(char *, char *, ftnlen, ftnlen);
  303. extern short hl_le(char *, char *, ftnlen, ftnlen);
  304. extern short hl_lt(char *, char *, ftnlen, ftnlen);
  305. extern integer i_abs(integer *);
  306. extern integer i_dim(integer *, integer *);
  307. extern integer i_dnnt(double *);
  308. extern integer i_indx(char *, char *, ftnlen, ftnlen);
  309. extern integer i_len(char *, ftnlen);
  310. extern integer i_mod(integer *, integer *);
  311. extern integer i_nint(float *);
  312. extern integer i_sign(integer *, integer *);
  313. extern integer iargc_(void);
  314. extern ftnlen l_ge(char *, char *, ftnlen, ftnlen);
  315. extern ftnlen l_gt(char *, char *, ftnlen, ftnlen);
  316. extern ftnlen l_le(char *, char *, ftnlen, ftnlen);
  317. extern ftnlen l_lt(char *, char *, ftnlen, ftnlen);
  318. extern void pow_ci(complex *, complex *, integer *);
  319. extern double pow_dd(double *, double *);
  320. extern double pow_di(double *, integer *);
  321. extern short pow_hh(short *, shortint *);
  322. extern integer pow_ii(integer *, integer *);
  323. extern double pow_ri(float *, integer *);
  324. extern void pow_zi(doublecomplex *, doublecomplex *, integer *);
  325. extern void pow_zz(doublecomplex *, doublecomplex *, doublecomplex *);
  326. extern double r_abs(float *);
  327. extern double r_acos(float *);
  328. extern double r_asin(float *);
  329. extern double r_atan(float *);
  330. extern double r_atn2(float *, float *);
  331. extern void r_cnjg(complex *, complex *);
  332. extern double r_cos(float *);
  333. extern double r_cosh(float *);
  334. extern double r_dim(float *, float *);
  335. extern double r_exp(float *);
  336. extern double r_imag(complex *);
  337. extern double r_int(float *);
  338. extern double r_lg10(float *);
  339. extern double r_log(float *);
  340. extern double r_mod(float *, float *);
  341. extern double r_nint(float *);
  342. extern double r_sign(float *, float *);
  343. extern double r_sin(float *);
  344. extern double r_sinh(float *);
  345. extern double r_sqrt(float *);
  346. extern double r_tan(float *);
  347. extern double r_tanh(float *);
  348. extern void s_cat(char *, char **, integer *, integer *, ftnlen);
  349. extern integer s_cmp(char *, char *, ftnlen, ftnlen);
  350. extern void s_copy(char *, char *, ftnlen, ftnlen);
  351. extern int s_paus(char *, ftnlen);
  352. extern integer s_rdfe(cilist *);
  353. extern integer s_rdue(cilist *);
  354. extern integer s_rnge(char *, integer, char *, integer);
  355. extern integer s_rsfe(cilist *);
  356. extern integer s_rsfi(icilist *);
  357. extern integer s_rsle(cilist *);
  358. extern integer s_rsli(icilist *);
  359. extern integer s_rsne(cilist *);
  360. extern integer s_rsni(icilist *);
  361. extern integer s_rsue(cilist *);
  362. extern int s_stop(char *, ftnlen);
  363. extern integer s_wdfe(cilist *);
  364. extern integer s_wdue(cilist *);
  365. extern integer s_wsfe(cilist *);
  366. extern integer s_wsfi(icilist *);
  367. extern integer s_wsle(cilist *);
  368. extern integer s_wsli(icilist *);
  369. extern integer s_wsne(cilist *);
  370. extern integer s_wsni(icilist *);
  371. extern integer s_wsue(cilist *);
  372. extern void sig_die(char *, int);
  373. extern integer signal_(integer *, void (*)(int));
  374. extern int system_(char *, ftnlen);
  375. extern double z_abs(doublecomplex *);
  376. extern void z_cos(doublecomplex *, doublecomplex *);
  377. extern void z_div(doublecomplex *, doublecomplex *, doublecomplex *);
  378. extern void z_exp(doublecomplex *, doublecomplex *);
  379. extern void z_log(doublecomplex *, doublecomplex *);
  380. extern void z_sin(doublecomplex *, doublecomplex *);
  381. extern void z_sqrt(doublecomplex *, doublecomplex *);
  382.  
  383. #ifdef __cplusplus
  384. }
  385. #endif
  386.  
  387. #endif  /* prototypes for ANSI C and C++ */
  388.  
  389.  
  390. #endif            /* F2C_INCLUDE */
  391.  
  392.  
  393.